package com.ruoyi.business.domain.bo;

import com.alibaba.excel.annotation.format.DateTimeFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.*;

import java.util.Date;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 员工业务对象 employee
 *
 * @author ruoyi
 * @date 2023-06-21
 */

@Data
@EqualsAndHashCode(callSuper = true)
public class EmployeeBo extends BaseEntity {

    /**
     * id
     */
    @NotNull(message = "id不能为空", groups = { EditGroup.class })
    private Long id;

    /**
     * 工号
     */
    @NotBlank(message = "工号不能为空", groups = { AddGroup.class, EditGroup.class })
    private String jobNumber;

    /**
     * 姓名
     */
    @NotBlank(message = "姓名不能为空", groups = { AddGroup.class, EditGroup.class })
    private String fullName;

    /**
     * 部门id
     */
    private String deptid;
    /**
     * 部门
     */

    private String department;

    /**
     * 岗位
     */

    private String position;

    /**
     * 性别
     */

    private String gender;

    /**
     * 民族
     */

    private String ethnicity;

    /**
     * 身份证号码
     */
    private String idNumber;

    /**
     * 身份证家庭地址
     */

    private String homeAddress;

    /**
     * 实际居住地
     */

    private String residentialAddress;

    /**
     * 联系电话
     */

    private String contactNumber;

    /**
     * 紧急联系人
     */

    private String emergencyContactPerson;

    /**
     * 紧急联系电话
     */

    private String emergencyContactNumber;

    /**
     * 学历
     */

    private String education;

    /**
     * 专业
     */

    private String major;

    /**
     * 技术职称
     */

    private String technicalTitle;

    /**
     * 入职时间
     */

    private Date entryDate;

    /**
     * 离职时间
     */

    private Date departureDate;

    /**
     * 离职情况
     */

    private String departureStatus;

    /**
     * 离职原因
     */

    private String departureReason;

    /**
     * 是否包吃
     */

    private String freeMeal;

    /**
     * 是否缴纳农村医疗保险
     */

    private String ruralMedicalInsurance;

    /**
     * 太平洋保险
     */

    private String insurancePacific;

    /**
     * 中国人保保险
     */

    private String insuranceCpic;

    /**
     * 中国人寿保险
     */
    private String insuranceChinalife;

    /**
     * 五险
     */
    private String socialInsurance;

    /**
     * 参保时间
     */
    private Date insuranceStartDate;

    /**
     * 退保时间
     */
    private Date insuranceEndDate;

    /**
     * 是否签订放弃五险承诺书
     */
    private String waiveSocialInsurance;

    /**
     * 公积金缴纳时间
     */
    private Date housingFundStartDate;

    /**
     * 职务层级
     */
    private String positionLevel;

    /**
     * 职级
     */
    private String employeeRank;

    /**
     * 职级工资
     */
    private BigDecimal rankSalary;

    /**
     * 绩效档位
     */
    private String performanceLevel;

    /**
     * 绩效金额
     */
    private BigDecimal performanceAmount;

    /**
     * 月押金额
     */
    private BigDecimal monthlyRent;

    /**
     * 技能工资
     */
    private BigDecimal skillSalary;

    /**
     * 个税补贴
     */
    private BigDecimal taxSubsidy;

    /**
     * 备注
     */
    private String remarks;

    /**
     * 首次签订到期时间
     */
    private Date firstContractExpiryDate;

    /**
     * 二次签订到期时间
     */
    private Date secondContractExpiryDate;

    /**
     * 三次签订到期时间
     */
    private Date thirdContractExpiryDate;

    /**
     * 四次签订到期时间
     */
    private Date fourthContractExpiryDate;

    /**
     * 五次签订到期时间
     */
    private Date fifthContractExpiryDate;

    /**
     * 合同签订情况备注
     */
    private String contractRemarks;

    /**
     * 年龄
     */
    private Long age;

    /**
     * 是否住宿
     */
    private String accommodation;
    /**
     * 提交办理住宿的标记
     */
    private String allocated;
    /**
     * 房间号
     */
    private String roomNumber;
    /**
     * 是否外包人员
     */
    private String outsource;
    /**
     * 删除标志（0代表在职，1，离职 2代表删除)
     */
    private String delFlag;
    /**
     * pdfurl
     */
    private String pdfurl;
    /**
     * 岗位变动情况
     */
    private String jobchange;
    /**
     * 二次入职情况
     */
    private String secondemployment;

    private String fujianmanage;

    /**
     * 高级搜索的入职时间
     */
    private Date[] entryDateArray;
    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd")
    private Date entryDateStart;
    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd")
    private Date entryDateEnd;
    /**
     * 公积金缴纳时间
     */
    private Date[] housingFundStartDateArray;
    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd")
    private Date housingFundStartDateStart;
    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd")
    private Date housingFundStartDateEnd;
    /**
     * 参保时间
     */
    private Date[] insuranceStartDateArray;
    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd")
    private Date insuranceStartDateStart;
    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd")
    private Date insuranceStartDateEnd;
    /**
     * 退保时间
     */
    private Date[] insuranceEndDateArray;
    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd")
    private Date insuranceEndDateStart;
    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd")
    private Date insuranceEndDateEnd;
    /**
     * 首次签订到期时间
     */
    private Date[] firstContractExpiryDateArray;
    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd")
    private Date firstContractExpiryDateStart;
    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd")
    private Date firstContractExpiryDateEnd;
    /**
     * 二次签订到期时间
     */
    private Date[] secondContractExpiryDateArray;
    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd")
    private Date secondContractExpiryDateStart;
    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd")
    private Date secondContractExpiryDateEnd;
    /**
     * 3次签订到期时间
     */
    private Date[] thirdContractExpiryDateArray;
    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd")
    private Date thirdContractExpiryDateStart;
    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd")
    private Date thirdContractExpiryDateEnd;
    /**
     * 4次签订到期时间
     */
    private Date[] fourthContractExpiryDateArray;
    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd")
    private Date fourthContractExpiryDateStart;
    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd")
    private Date fourthContractExpiryDateEnd;
    /**
     * 5次签订到期时间
     */
    private Date[] fifthContractExpiryDateArray;
    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd")
    private Date fifthContractExpiryDateStart;
    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd")
    private Date fifthContractExpiryDateEnd;
    /**
     * 离职时间
     */
    private Date[] departureDateArray;
    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd")
    private Date departureDateStart;
    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd")
    private Date departureDateEnd;
}
